Technique for Distributing Software

ABSTRACT

A computer program product and method for installing downloaded software on a client system over a network is described. The product and method include generating an access key by receiving an installation key produced using a random number generated from a seed that is the value of a client system internal clock at the exact moment in time to the millisecond at which a software installation program was run on the client produce the access code by modulo combining the installation key and user name received by the client system.

BACKGROUND

This invention is directed to techniques to distribute software andprevent its unauthorized transfer.

It is desirable to distribute software electronically and still licenseit in some manner. Traditionally there were two ways of doing thislicensing. One was shipping a CD with a software that required a licensekey. All CD's for a given product would have the same software, exceptfor the license key that was required. This is a common way ofdistributing software for desktop applications. A second mechanism has alicensing software library built into the software. Both mechanisms areoften used to down load software from the Internet.

One approach is a product Flex1M offered by Globetrotter. With thisproduct a distributor buys the software, bundles the software withapplication software, and uses the bundled mechanism for generatingkeys.

SUMMARY

According to an aspect of the present invention, a method of downloadingsoftware over a network includes downloading the software andinstalling. Installing the software includes generating an installationkey by using a random number generated from a seed that is the value ofa client system internal clock at the exact moment in time to themillisecond at which the software installation program was run on theclient, and producing an access code by combining the installation keyand user name and performing a modulo operation on the result.

According to an additional aspect of the present invention, a computerprogram product residing on a computer readable medium for installingdownloaded software on a client system over a network, includesinstructions to cause a computer to generate an access key by receivingan installation key produced using a random number generated from a seedthat is the value of a client system internal clock at the exact momentin time to the millisecond at which a software installation program wasrun on the client produce the access code by modulo combining theinstallation key and user name received by the client system.

One or more of the following advantages are provided by one or moreaspects of the invention.

The invention obviates the need to ship software on a CD, allowing for apurely electronic distribution method. The invention also avoids thecomplexity of licensing libraries built into the software. The inventiondelivers software that requires a key that can only work on onecomputer.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of networked systems.

FIG. 2 is a block diagram of a server in the system of FIG. 1.

FIGS. 3A and 3B are flow charts of processes in the server of FIG. 2.

DESCRIPTION

Referring to FIG. 1, a networked system 10 is shown for delivery ofsoftware over, e.g., the Internet. The networked system 10 includes aclient system 12 connected to a server 14, via a network, e.g., theInternet 18. The networked system 10 is implemented as a Web-stylesystem that is used to facilitate communications between users at clientcomputers such as client system 12 and the server 14 over the network18. In a Web implementation, the network 18 can be the “Internet” andthe server 14 a Web server. Private networks can also be used.

More particularly, a user at client system 12 surfs via a Web browser20, to the Web server 14. At the web server 14 the client can downloadsoftware. In some implementations, the software can be an applicationprogram whereas in other implementations the software can be a programsuch as a screen saver. In addition the software can be offered withbasic features for one price, e.g., freely distributed, or can bedistributed with additional optional features by having the user pay forthe features with a credit card.

The Web browser 20 renders display output in the form of hypertextmarkup language (HTML) pages. The Web browser 20 may be any commerciallyavailable browser, such as Microsoft Internet Explorer or NetscapeNavigator.

Referring to FIG. 2, processes that run on the server 14 are shown. Theserver 14 executes a server process 30. The server 14 can include a webserver process, which among other functions produces web pages 32, aswell as a server that executes requests for client systems. The server14 stores information organized into distributed web pages. For example,the pages are stored as information encoded into HTML or othertechniques. The manner in which the HTML and equivalent pages areproduced is well known and therefore not discussed herein. The server 14also stores the software 34 that is made available for distribution, viathe Internet. The software 34 includes basic features that can besupplied for free to a user as well as features that are not activatedat download unless or until a fee is paid for the additional features.The features are unlocked by an access key 36 that also makes thesoftware fixed to one client system 12.

Referring to FIG. 3A, the server 14 delivers an executable of thesoftware 34 to the client system 12 with certain features turned off.The user freely downloads this basic version of the executable from theserver 14. That executable runs in “basic mode.” To access premiumfeatures, which are turned off, the user enters an access key 36 (FIG.2) through a dialog box that can pop up under any of a number ofcircumstances, e.g., trying to access a premium feature, as a reminderto upgrade or as an invitation to upgrade. The access key 36 is producedfrom information supplied by the user after or as part of upgrading theproduct, as described below.

When the user downloads the software 42 and runs the installation 44,the installation generates 46 an installation key, which is a piece ofinformation that will be used to generate the access key 36. Anotherpiece of information is the user name under which operating systemregistered on the client system 12. For example, with the Windows basedoperating systems, when a user installs Windows 2000®, (Microsoft)Windows asks for an installation name. The name is stored inside thewindows registry as the so called registered owner. This feature isavailable on Windows 95®, 98®, NT®, and so forth. The registered namestays on the client system 12 until the operating system is changed.

The installation key is an N digit key, e.g., 12 to 16 characters thatis randomly generated. The mechanism that is used to generate the Ndigit key is a random number generator. As known, a random numbergenerator is only as random as the seed used to generate it. The seedused in the preferred embodiment is the value of the client systeminternal clock at the exact moment in time to the millisecond at whichthe software installation program was run on the client. If two usersdownloaded the software and ran the installation program at the exactmoment in time (to the millisecond) they would get the same installationkey. However this is highly unlikely. However, since the names on thesystem, i.e., the registered owner, are likely different the key that isgenerated is likewise different.

Referring to FIG. 3B, a user desires to upgrade 60 to the premiumfeatures. During upgrade 60, the user can be prompted by a dialog box toenter the access code. Initially, the user does not have the access codeand instead can select an option to upgrade the basic software. Theprogram connects the user to the server 14. The program embeds theinstallation key and the user name in the information that is sent tothe server, e.g., website by the user.

As part of the upgrade process the user is prompted to fill ininformation 64, via web pages that are delivered from the server. Theinformation includes name, e-mail address, address, demographics, and soforth, items that the distributor of the software would want formarketing etc, to be stored in a database (not shown). When the usercomes to the site, the user fills in the information and supplies acredit card number for a credit card transaction. Once the distributorreceives acknowledgment of the transaction 66. The server 14 receivesthe information from the client 12, e.g., installation key and username, and based on the information generates 68 the access code. Theaccess code is generated 68 based on the algorithm described below andsupplied 70 to the user.

The installation key has 16 digits, the user name could have any numberof digits. The process to produce the access key goes through each digitand adds the installation key and the user name digit by digit. In thisimplementation the installation key is always 16 digits and since theuser name can be any number, the registered user name is expanded (orshrunk) to make the length of the registered user be the same as thelength of the installation key, e.g., 16 digits. That is, if theregistered user length is greater than 16 digits, everything after the16th digit is simply discarded. Conversely, if the registered userlength is less than 16 digits, the string is recycled.

For example, if the registered user is “Fred Smith”. This string isexpanded to “Fred SmithFred S” (16 digits including spaces). With thetwo strings (the installation key & the registered user), which are both16 digits, the algorithm adds the two strings, digit by digit. Forexample, given an installation code of

-   -   abcdefghijklmnop        and a registered user of “Fred Flintstone”, the algorithm adds        each digit (“a”+“F”; “b”+“r”; “c”+“e”; “d”+“d”; and so on . . .        ) to get an array of numbers. The array of numbers is 16 digits        in length. Each number in the array is converted back to a        letter by applying mathematical “modulo” operations. In this        case, (number) MODULO 48, since 48 is the ascii representation        of the letter “a.”

The upgrade process 60 generates the access key 68 and sends 70 theaccess key back to the person via two methods. One method used to returnthe key to the user is to display the key in the Web browser so that theuser can cut and paste it back into the dialog box that was opened whenthe user initially decided to upgrade. The distributor will also send ane-mail to the e-mail address supplied by the user. The e-mail willinclude the key that is placed in the Windows registry, or elsewhere.

In order to execute the software, the software retrieves the name of theregistered owner and the generated installation code, which are storedon the client system, e.g., in the Windows registry or elsewhere, andproduces the access key, which is compared to the access key entered bythe user during the upgrade process. If the access codes are the same,the software executes. If they are not the same, the software does notexecute, or alternatively the software can execute only in basic modewithout the premium features, or a user can be prompted to upgrade.

Thus, this process combines the user ID or other identifier, e.g., aserial number of a processor or a hard drive with a customizedinstallation key to lock the downloaded software to a particularmachine.

Other embodiments are within the scope of the appended claims.

1. A method of downloading software over a network comprises:downloading the software and installing, the software includinggenerating an installation key by using a random number generated from aseed that is the value of a client system internal clock at the exactmoment in time to the millisecond at which the software installationprogram was run on the client; and producing an access code by combiningthe installation key and user name; and performing a modulo operation onthe result.
 2. The method of claim 1 wherein producing the access codecomprises: adding the installation key to the user name on a digit bydigit basis.
 3. The method of claim 1 wherein the modulo operation is a“modulo 48” operation based on an Ascii code.
 4. A computer programproduct residing on a computer readable medium for installing downloadedsoftware on a client system over a network comprises instructions tocause a computer to: generate an access key by receiving an installationkey produced using a random number generated from a seed that is thevalue of a client system internal clock at the exact moment in time tothe millisecond at which a software installation program was run on theclient produce the access code by modulo combining the installation keyand user name received by the client system.
 5. The computer programproduct of claim 4 wherein producing the access code comprisesinstructions to: add the installation key to the user name on a digit bydigit basis.
 6. The computer program product of claim 4 wherein themodulo operation is a “modulo 48” operation based on an Ascii code. 7.The computer program product of claim 4 further comprising instructionsto cause the computer to: send the access code back to the clientsystem.